package com.javaweb.annotation.sql;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.javaweb.constant.CommonConstant;

/**
 * 实体类与数据库字段映射注解
 * @author tank2140896
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {

	/**
	 * 字段名称
	 * @return String 字段名称
	 */
	String name();
	
	/**
	 * 是否是主键
	 * @return boolean true：是主键；false：不是主键（默认不是主键）
	 */
	boolean pk() default CommonConstant.FALSE;
	
	/**
	 * 是否ID自动生成
	 * @return boolean true：自动生成；false：不自动生成（默认不自动生成）
	 */
	boolean idAutoCreate() default CommonConstant.FALSE;

	/**
	 * 是否主键自增
	 * @return boolean true：主键自增；false：主键不自增（默认主键不自增）
	 */
	boolean keyGenerate() default CommonConstant.FALSE;
	
	/**
	 * 字段说明
	 * @return String 字段说明（默认空）
	 */
	String columnDesc() default CommonConstant.EMPTY_VALUE;
	
	/**
	 * 更新时是否能设置为null或者空
	 * <p>
	 * 当canUpdateSetEmpty设置为false，但实际对象还是设置为null或者空时，将忽略该字段的值
	 * @return boolean true：可以；false：不能（默认不能）
	 */
	boolean canUpdateSetEmpty() default CommonConstant.FALSE;
	
}
